package controle;

import java.rmi.RemoteException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;

import dominio.IOrdemDePagamento;
import dominio.OrdemDePagamento;

import br.com.pedido.www.ListarOrdemDePagamentoServicoRequest;
import br.com.pedido.www.OrdemDePagamentoServicoRequest;
import br.com.pedido.www.OrdemDePagamentoServicoResponse;

import infra.bean.OrdemDePagamentoBean;



public class OrdemDePagamentoServico  {
   


	public OrdemDePagamentoServicoResponse gerarOrdemDePagamento(
			OrdemDePagamentoServicoRequest params) throws RemoteException {

		OrdemDePagamentoServicoParticipante part = new OrdemDePagamentoServicoParticipante(this, params);		

		OrdemDePagamentoBean ordemDePagamentoBean = new OrdemDePagamentoBean();
		ordemDePagamentoBean.setIdPedidoServico(params.getOrdemPagamentoBeanElement().getIdPedidoServico());
		ordemDePagamentoBean.setIdOrdemDeTrabalho(params.getOrdemPagamentoBeanElement().getIdOrdemTrabalho());
		ordemDePagamentoBean.setStatus("NOVA");
		ordemDePagamentoBean.setValorTotal(params.getOrdemPagamentoBeanElement().getValorTotal());
		ordemDePagamentoBean.setDataPagamento(params.getOrdemPagamentoBeanElement().getDataPagamento().getTime());
		ordemDePagamentoBean.setFornecedor(params.getOrdemPagamentoBeanElement().getFornecedor());
		ordemDePagamentoBean.setTipoItem(params.getOrdemPagamentoBeanElement().getIdTipoItem());
		OrdemDePagamentoServicoResponse ordemPagamentoServicoResponse = new OrdemDePagamentoServicoResponse();
		
		try {
			ordemPagamentoServicoResponse.setIdOrdemPagamento(part.gerarOrdemDePagamento(ordemDePagamentoBean));
			
		}  catch (SQLException e) {
			throw new RemoteException (e.getMessage());
		}


		return ordemPagamentoServicoResponse;
		
	}

	
	public br.com.pedido.www.ListaOrdemPagamentoBean[] listarOrdemDePagamento(
			ListarOrdemDePagamentoServicoRequest params) throws RemoteException {
		
	
		try {
			IOrdemDePagamento ordemPagamento = new OrdemDePagamento();
		
			ArrayList listaOrdemPagamento = new ArrayList();
			listaOrdemPagamento = ordemPagamento.listarOrdemDePagamento();
			
	
			br.com.pedido.www.ListaOrdemPagamentoBean[] ordensPagamentoResponse = new br.com.pedido.www.ListaOrdemPagamentoBean[listaOrdemPagamento.size()];
			
			for (int i=0; i<listaOrdemPagamento.size(); i++) {
				OrdemDePagamentoBean ordemPagamentoListaBean = (OrdemDePagamentoBean) listaOrdemPagamento.get(i);
				
				Calendar cal = Calendar.getInstance();
				cal.setTime(ordemPagamentoListaBean.getDataPagamento());
				
				br.com.pedido.www.ListaOrdemPagamentoBean ordemPagamentoBean = new br.com.pedido.www.ListaOrdemPagamentoBean(ordemPagamentoListaBean.getIdPedidoServico(),
						ordemPagamentoListaBean.getIdOrdemDeTrabalho(), ordemPagamentoListaBean.getValorTotal(), 
						cal, ordemPagamentoListaBean.getFornecedor(), ordemPagamentoListaBean.getTipoItem(),
						ordemPagamentoListaBean.getStatus(), ordemPagamentoListaBean.getIdOrdemDePagamento(), ordemPagamentoListaBean.getNomeTipoItem(), 
						ordemPagamentoListaBean.getNomeFornecedor());
				ordensPagamentoResponse[i] = ordemPagamentoBean;
			}
		
			return ordensPagamentoResponse;
		}
		catch(SQLException e){
			throw new RemoteException(e.getMessage());
		}
	
	
	}


}
